import Types from '../../action/types';

const defaultState = {
  showText: '搜索',
  items: [],
  isLoading: false,
  projectModes: [], //要显示的数据
  hideLoadingMore: true, //默认隐藏加载更多
  showBottomButton: false,
};

/**
 * 0.stata树横向扩展
 * 1.如何动态的设置store，和动态获取store(难点：storekey不固定)
 * 这是一个 reducer，形式为 (state, action) => state 的纯函数。
 * 描述了 action 如何把 state 转变成下一个 state。
 *
 * state 的形式取决于你，可以是基本类型、数组、对象,
 * 当 state 变化时需要返回全新的对象，而不是修改传入的参数。
 *
 * 下面例子使用 `switch` 语句和字符串来做判断，但你可以写帮助类(helper)
 * 根据不同的约定（如方法映射）来判断，只要适用你的项目即可。
 */
export default function onAction(state = defaultState, action) {
  switch (action.type) {
    case Types.SEARCH_REFRESH: //搜索数据
      return {
        ...state,
        hideLoadingMore: true,
        isLoading: true,
        showBottomButton: false,
        showText: '取消',
      };
    case Types.SEARCH_REFRESH_SUCCESS: //获取数据成功
      return {
        ...state,
        hideLoadingMore: false,
        isLoading: false,
        showBottomButton: action.showBottomButton,
        items: action.items,
        projectModes: action.projectModes,
        pageIndex: action.pageIndex,
        showText: '搜索',
        inputKey: action.inputKey,
      };
    case Types.SEARCH_FAIL: //下拉刷新失败
      return {
        ...state,
        isLoading: false,
        showText: '搜索',
      };
    case Types.SEARCH_CANCEL: //取消搜索
      return {
        ...state,
        isLoading: false,
        items: action.items,
        projectModes: action.projectModes,
        inputKey: action.inputKey,
        showText: '搜索',
        hideLoadingMore: true,
      };
    case Types.SEARCH_LOAD_MORE_SECCESS: //上拉加载更多成功
      return {
        ...state,
        projectModes: action.projectModes,
        hideLoadingMore: false,
        pageIndex: action.pageIndex,
      };
    case Types.SEARCH_LOAD_MORE_FAIL: //上拉加载更多失败
      return {
        ...state,
        hideLoadingMore: true,
        pageIndex: action.pageIndex,
      };
    default:
      return state;
  }
}
